//路由鉴权
import router from '@/router'
import nprogress from 'nprogress'
import 'nprogress/nprogress.css'
import setting from '@/setting'
import useUserStore from '@/store/modules/user'
import pinia from '@/store'

// 配置 nprogress，去掉转圈动画
nprogress.configure({showSpinner: false});

const userStore = useUserStore(pinia)
//全局前置守卫
router.beforeEach(async (to, from, next) => {
        document.title = `${setting.title} - ${to.meta.title}`
        nprogress.start();
        // 判断登录状态
        let token = userStore.token;
        if (token) {
            if (to.path === '/login') {
                // 如果登录成功，不能再访问login
                next({path: '/'})
            } else {
                if (userStore.username) {
                    // 如果用户名已有，直接放行
                    next()
                } else {
                    // 如果没有用户信息，在守卫这里发请求获取到用户信息再放行
                    try {
                        // 获取用户信息
                        await userStore.getUserInfo()
                        next()
                    } catch (error) {
                        // token失效
                        userStore.logout()
                        next({path: '/login', query: {redirect: to.path}})
                    }
                }
            }
        } else {
            if (to.path === '/login') {
                // 如果没有登录，只能访问登录页面
                next()
            } else {
                // 没有登录，去其他页面，跳转到登录页
                next({path: '/login', query: {redirect: to.path}})
            }
        }
    }
)
//全局后置守卫
router.afterEach((to, from) => {
    nprogress.done();
})